A computer network is simply a group of two or more computers that are linked together. Many types of networks exist, but the most common types of networks are Local-Area Networks (LANs) and Wide-Area Networks (WANs). In a LAN computers are connected within a xe2x80x9clocalxe2x80x9d area, for example, a home or office. A LAN in a home or small office may interconnect a few computers, whereas in the case of a large office or industrial complex, the LAN may include hundreds or even thousands of interconnected computers. In a WAN, the interconnected computers are generally farther apart and are connected via telephone/communication lines, radio waves, or other means of communication. There are also other network devices, for example, bridges, routers and switches, which may be used to link different networks or network segments into a larger network with more resources.
Each of these networks and network segments may have a peer-to-peer arrangement where each computing device is interconnected with the others on the network, or in a client/server arrangement where individual personal computers (PCs) log onto a server device. Additionally, a network is not limited to computers, but may also include other types of hardware devices and information services, for example, the bridges, routers and switches described above, printers, copiers and shared Internet connections. A network allows each of the users to interconnect with the other devices and services on the network for purposes such as application and file sharing, printer access, electronic mail and Internet access.
In a heterogeneous environment, such as a computer network, it is essential that each of the interconnected devices be able to receive information from and transmit information to the other devices in the network. The information transferred between network devices is generally referred to as data packets or packets and this transfer of information is generally referred to as packet flow. In response to the need for the different devices to communicate, standards bodies and other entities have developed numerous protocols for data packet flow over a network. A protocol specifies a common set of rules for packet format and packet flow, allowing a variety of devices to communicate. A layering model is the most common manner of dividing a protocol into subparts. The idea behind layering is that each layer is responsible for providing a service to the layer above by using the services of the layer below. Each layer communicates with its peer layer in another network node through the use of the protocol.
Generally, a data packet contains a destination address that is associated with one or more of the network devices. As the data packet travels through the network, the network routing devices are able to route the data packet to the correct destination or destinations based on the address. A network driver is an important piece of software because it is the interface between the network software and a hardware device. The network driver allows the upper level layers to interface with the hardware devices for control purposes, for example, the setting of registers in the hardware device, and also contains addressing interfaces information which allows the data packets to be transmitted to the hardware device.
However, since the network driver contains information for control of a particular hardware device, it is not transportable to other devices. Every network device needs an individual network driver configured for that particular hardware device. Additionally, the individual developing software code for the network driver needs intimate knowledge of both the hardware device and the network software. Thus, a hardware device manufacturer developing a network driver that is specific to its particular hardware device has, as an added level of complication, the need to understand the network software for any type of network in which the hardware device may be connected. In contrast, network software developers understand the network software, but are not intimately familiar with all the features of various hardware devices which may be connected to the network.
The present invention is directed to a software package for operating on a network including a plurality of network hardware devices. The software package includes at least one networking protocol to transmit and receive data packets over the network. The software package further includes a hardware device driver communicatively coupled to the network hardware devices, an enhanced network driver communicatively coupled to the hardware device driver to transmit and receive the data packets using the network hardware devices and a control interface to transmit and receive control information to and from the hardware device driver. The enhanced network driver and the control interface being portable to all of the network hardware devices, without regard for the type of the network hardware device.